home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Developer Kit / QuickTime 2.0 Developer Kit.iso / mac / MAC / Programming Stuff / Interfaces / CIncludes / Quickdraw.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-11  |  50.7 KB  |  1,368 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Quickdraw.h
  3.  
  4.      Copyright:    © 1984-1994 by Apple Computer, Inc.
  5.                  All rights reserved.
  6.  
  7.      Version:    Universal Interfaces 2.0a3  ETO #16, MPW prerelease.  Friday, November 11, 1994. 
  8.  
  9.      Bugs?:        If you find a problem with this file, send the file and version
  10.                  information (from above) and the problem description to:
  11.  
  12.                      Internet:    apple.bugs@applelink.apple.com
  13.                      AppleLink:    APPLE.BUGS
  14.  
  15. */
  16.  
  17. #ifndef __QUICKDRAW__
  18. #define __QUICKDRAW__
  19.  
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. /*    #include <ConditionalMacros.h>                                */
  25.  
  26. #ifndef __MIXEDMODE__
  27. #include <MixedMode.h>
  28. #endif
  29.  
  30. #ifndef __QUICKDRAWTEXT__
  31. #include <QuickdrawText.h>
  32. #endif
  33.  
  34. #ifdef __cplusplus
  35. extern "C" {
  36. #endif
  37.  
  38. #if GENERATINGPOWERPC
  39. #pragma options align=mac68k
  40. #endif
  41.  
  42. #ifdef __CFM68K__
  43. #pragma lib_export on
  44. #endif
  45.  
  46.  
  47. enum {
  48.     invalColReq                    = -1,                            /*invalid color table request*/
  49. /* transfer modes */
  50.     srcCopy                        = 0,                            /*the 16 transfer modes*/
  51.     srcOr                        = 1,
  52.     srcXor                        = 2,
  53.     srcBic                        = 3,
  54.     notSrcCopy                    = 4,
  55.     notSrcOr                    = 5,
  56.     notSrcXor                    = 6,
  57.     notSrcBic                    = 7,
  58.     patCopy                        = 8,
  59.     patOr                        = 9,
  60.     patXor                        = 10,
  61.     patBic                        = 11,
  62.     notPatCopy                    = 12,
  63.     notPatOr                    = 13,
  64.     notPatXor                    = 14,
  65.     notPatBic                    = 15,
  66. /* Special Text Transfer Mode */
  67.     grayishTextOr                = 49,
  68. /* Arithmetic transfer modes */
  69.     blend                        = 32,
  70.     addPin                        = 33
  71. };
  72.  
  73. enum {
  74.     addOver                        = 34,
  75.     subPin                        = 35,
  76.     addMax                        = 37,
  77.     adMax                        = 37,
  78.     subOver                        = 38,
  79.     adMin                        = 39,
  80.     ditherCopy                    = 64,
  81. /* Transparent mode constant */
  82.     transparent                    = 36,
  83. /* QuickDraw color separation constants */
  84.     normalBit                    = 0,                            /*normal screen mapping*/
  85.     inverseBit                    = 1,                            /*inverse screen mapping*/
  86.     redBit                        = 4,                            /*RGB additive mapping*/
  87.     greenBit                    = 3,
  88.     blueBit                        = 2,
  89.     cyanBit                        = 8,                            /*CMYBk subtractive mapping*/
  90.     magentaBit                    = 7,
  91.     yellowBit                    = 6,
  92.     blackBit                    = 5,
  93.     blackColor                    = 33,                            /*colors expressed in these mappings*/
  94.     whiteColor                    = 30,
  95.     redColor                    = 205
  96. };
  97.  
  98. enum {
  99.     greenColor                    = 341,
  100.     blueColor                    = 409,
  101.     cyanColor                    = 273,
  102.     magentaColor                = 137,
  103.     yellowColor                    = 69,
  104.     picLParen                    = 0,                            /*standard picture comments*/
  105.     picRParen                    = 1,
  106.     clutType                    = 0,                            /*0 if lookup table*/
  107.     fixedType                    = 1,                            /*1 if fixed table*/
  108.     directType                    = 2,                            /*2 if direct values*/
  109.     gdDevType                    = 0                                /*0 = monochrome 1 = color*/
  110. };
  111.  
  112. enum {
  113.     roundedDevice                = 5,                            /* 1 if device has been “rounded” into the GrayRgn */
  114.     hasAuxMenuBar                = 6,                            /* 1 if device has an aux menu bar on it */
  115.     burstDevice                    = 7,
  116.     ext32Device                    = 8,
  117.     ramInit                        = 10,                            /*1 if initialized from 'scrn' resource*/
  118.     mainScreen                    = 11,                            /* 1 if main screen */
  119.     allInit                        = 12,                            /* 1 if all devices initialized */
  120.     screenDevice                = 13,                            /*1 if screen device [not used]*/
  121.     noDriver                    = 14,                            /* 1 if no driver for this GDevice */
  122.     screenActive                = 15,                            /*1 if in use*/
  123.     hiliteBit                    = 7,                            /*flag bit in HiliteMode (lowMem flag)*/
  124.     pHiliteBit                    = 0,                            /*flag bit in HiliteMode used with BitClr procedure*/
  125.     defQDColors                    = 127,                            /*resource ID of clut for default QDColors*/
  126. /* pixel type */
  127.     RGBDirect                    = 16,                            /* 16 & 32 bits/pixel pixelType value */
  128. /* pmVersion values */
  129.     baseAddr32                    = 4                                /*pixmap base address is 32-bit address*/
  130. };
  131.  
  132. enum {
  133.     frame,
  134.     paint,
  135.     erase,
  136.     invert,
  137.     fill
  138. };
  139.  
  140. typedef SInt8 GrafVerb;
  141.  
  142.  
  143. enum {
  144.     chunky,
  145.     chunkyPlanar,
  146.     planar
  147. };
  148.  
  149. typedef SInt8 PixelType;
  150.  
  151. typedef short Bits16[16];
  152.  
  153. /***************   IMPORTANT NOTE REGARDING Pattern  **************************************
  154.    Patterns were originally defined as:
  155.    
  156.         C:             typedef unsigned char Pattern[8];
  157.         Pascal:        Pattern = PACKED ARRAY [0..7] OF 0..255;
  158.         
  159.    The old array defintion of Pattern would cause 68000 based CPU's to crash in certain circum-
  160.    stances. The new struct definition is safe, but may require source code changes to compile.
  161.    Read the details in TechNote "Platforms & Tools" #PT 38.
  162.     
  163. *********************************************************************************************/
  164. struct Pattern {
  165.     UInt8                            pat[8];
  166. };
  167. typedef struct Pattern Pattern;
  168.  
  169. typedef const Pattern *ConstPatternParam;
  170.  
  171. typedef Pattern *PatPtr;
  172.  
  173. typedef PatPtr *PatHandle;
  174.  
  175. typedef SignedByte QDByte, *QDPtr, **QDHandle;
  176.  
  177. typedef short QDErr;
  178.  
  179.  
  180. enum {
  181.     singleDevicesBit            = 0,
  182.     dontMatchSeedsBit            = 1,
  183.     allDevicesBit                = 2
  184. };
  185.  
  186. enum {
  187.     singleDevices                = 1 << singleDevicesBit,
  188.     dontMatchSeeds                = 1 << dontMatchSeedsBit,
  189.     allDevices                    = 1 << allDevicesBit
  190. };
  191.  
  192. typedef unsigned long DeviceLoopFlags;
  193.  
  194. struct BitMap {
  195.     Ptr                                baseAddr;
  196.     short                            rowBytes;
  197.     Rect                            bounds;
  198. };
  199. typedef struct BitMap BitMap;
  200.  
  201. typedef BitMap *BitMapPtr, **BitMapHandle;
  202.  
  203. struct Cursor {
  204.     Bits16                            data;
  205.     Bits16                            mask;
  206.     Point                            hotSpot;
  207. };
  208. typedef struct Cursor Cursor;
  209.  
  210. typedef Cursor *CursPtr, **CursHandle;
  211.  
  212. struct PenState {
  213.     Point                            pnLoc;
  214.     Point                            pnSize;
  215.     short                            pnMode;
  216.     Pattern                            pnPat;
  217. };
  218. typedef struct PenState PenState;
  219.  
  220. struct Region {
  221.     short                            rgnSize;                    /*size in bytes*/
  222.     Rect                            rgnBBox;                    /*enclosing rectangle*/
  223. };
  224. typedef struct Region Region;
  225.  
  226. typedef Region *RgnPtr, **RgnHandle;
  227.  
  228. struct Picture {
  229.     short                            picSize;
  230.     Rect                            picFrame;
  231. };
  232. typedef struct Picture Picture;
  233.  
  234. typedef Picture *PicPtr, **PicHandle;
  235.  
  236. struct Polygon {
  237.     short                            polySize;
  238.     Rect                            polyBBox;
  239.     Point                            polyPoints[1];
  240. };
  241. typedef struct Polygon Polygon;
  242.  
  243. typedef Polygon *PolyPtr, **PolyHandle;
  244.  
  245. typedef pascal void (*QDTextProcPtr)(short byteCount, Ptr textBuf, Point numer, Point denom);
  246. typedef pascal void (*QDLineProcPtr)(Point newPt);
  247. typedef pascal void (*QDRectProcPtr)(GrafVerb verb, Rect *r);
  248. typedef pascal void (*QDRRectProcPtr)(GrafVerb verb, Rect *r, short ovalWidth, short ovalHeight);
  249. typedef pascal void (*QDOvalProcPtr)(GrafVerb verb, Rect *r);
  250. typedef pascal void (*QDArcProcPtr)(GrafVerb verb, Rect *r, short startAngle, short arcAngle);
  251. typedef pascal void (*QDPolyProcPtr)(GrafVerb verb, PolyHandle poly);
  252. typedef pascal void (*QDRgnProcPtr)(GrafVerb verb, RgnHandle rgn);
  253. typedef pascal void (*QDBitsProcPtr)(BitMap *srcBits, Rect *srcRect, Rect *dstRect, short mode, RgnHandle maskRgn);
  254. typedef pascal void (*QDCommentProcPtr)(short kind, short dataSize, Handle dataHandle);
  255. typedef pascal short (*QDTxMeasProcPtr)(short byteCount, Ptr textAddr, Point *numer, Point *denom, FontInfo *info);
  256. typedef pascal void (*QDGetPicProcPtr)(Ptr dataPtr, short byteCount);
  257. typedef pascal void (*QDPutPicProcPtr)(Ptr dataPtr, short byteCount);
  258. typedef pascal void (*QDOpcodeProcPtr)(Rect *fromRect, Rect *toRect, short opcode, short version);
  259. typedef pascal void (*QDJShieldCursorProcPtr)(short left, short top, short right, short bottom);
  260.  
  261. #if GENERATINGCFM
  262. typedef UniversalProcPtr QDTextUPP;
  263. typedef UniversalProcPtr QDLineUPP;
  264. typedef UniversalProcPtr QDRectUPP;
  265. typedef UniversalProcPtr QDRRectUPP;
  266. typedef UniversalProcPtr QDOvalUPP;
  267. typedef UniversalProcPtr QDArcUPP;
  268. typedef UniversalProcPtr QDPolyUPP;
  269. typedef UniversalProcPtr QDRgnUPP;
  270. typedef UniversalProcPtr QDBitsUPP;
  271. typedef UniversalProcPtr QDCommentUPP;
  272. typedef UniversalProcPtr QDTxMeasUPP;
  273. typedef UniversalProcPtr QDGetPicUPP;
  274. typedef UniversalProcPtr QDPutPicUPP;
  275. typedef UniversalProcPtr QDOpcodeUPP;
  276. typedef UniversalProcPtr QDJShieldCursorUPP;
  277. #else
  278. typedef QDTextProcPtr QDTextUPP;
  279. typedef QDLineProcPtr QDLineUPP;
  280. typedef QDRectProcPtr QDRectUPP;
  281. typedef QDRRectProcPtr QDRRectUPP;
  282. typedef QDOvalProcPtr QDOvalUPP;
  283. typedef QDArcProcPtr QDArcUPP;
  284. typedef QDPolyProcPtr QDPolyUPP;
  285. typedef QDRgnProcPtr QDRgnUPP;
  286. typedef QDBitsProcPtr QDBitsUPP;
  287. typedef QDCommentProcPtr QDCommentUPP;
  288. typedef QDTxMeasProcPtr QDTxMeasUPP;
  289. typedef QDGetPicProcPtr QDGetPicUPP;
  290. typedef QDPutPicProcPtr QDPutPicUPP;
  291. typedef QDOpcodeProcPtr QDOpcodeUPP;
  292. typedef QDJShieldCursorProcPtr QDJShieldCursorUPP;
  293. #endif
  294.  
  295. struct QDProcs {
  296.     QDTextUPP                        textProc;
  297.     QDLineUPP                        lineProc;
  298.     QDRectUPP                        rectProc;
  299.     QDRRectUPP                        rRectProc;
  300.     QDOvalUPP                        ovalProc;
  301.     QDArcUPP                        arcProc;
  302.     QDPolyUPP                        polyProc;
  303.     QDRgnUPP                        rgnProc;
  304.     QDBitsUPP                        bitsProc;
  305.     QDCommentUPP                    commentProc;
  306.     QDTxMeasUPP                        txMeasProc;
  307.     QDGetPicUPP                        getPicProc;
  308.     QDPutPicUPP                        putPicProc;
  309. };
  310. typedef struct QDProcs QDProcs;
  311.  
  312. typedef QDProcs *QDProcsPtr;
  313.  
  314. enum {
  315.     uppQDTextProcInfo = kPascalStackBased
  316.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  317.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Ptr)))
  318.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Point)))
  319.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(Point))),
  320.     uppQDLineProcInfo = kPascalStackBased
  321.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Point))),
  322.     uppQDRectProcInfo = kPascalStackBased
  323.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  324.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*))),
  325.     uppQDRRectProcInfo = kPascalStackBased
  326.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  327.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*)))
  328.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
  329.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short))),
  330.     uppQDOvalProcInfo = kPascalStackBased
  331.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  332.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*))),
  333.     uppQDArcProcInfo = kPascalStackBased
  334.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  335.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*)))
  336.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
  337.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short))),
  338.     uppQDPolyProcInfo = kPascalStackBased
  339.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  340.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(PolyHandle))),
  341.     uppQDRgnProcInfo = kPascalStackBased
  342.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(GrafVerb)))
  343.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(RgnHandle))),
  344.     uppQDBitsProcInfo = kPascalStackBased
  345.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(BitMap*)))
  346.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*)))
  347.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Rect*)))
  348.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short)))
  349.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(RgnHandle))),
  350.     uppQDCommentProcInfo = kPascalStackBased
  351.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  352.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  353.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Handle))),
  354.     uppQDTxMeasProcInfo = kPascalStackBased
  355.          | RESULT_SIZE(SIZE_CODE(sizeof(short)))
  356.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  357.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Ptr)))
  358.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Point*)))
  359.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(Point*)))
  360.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(FontInfo*))),
  361.     uppQDGetPicProcInfo = kPascalStackBased
  362.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr)))
  363.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))),
  364.     uppQDPutPicProcInfo = kPascalStackBased
  365.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr)))
  366.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short))),
  367.     uppQDOpcodeProcInfo = kPascalStackBased
  368.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Rect*)))
  369.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*)))
  370.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
  371.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short))),
  372.     uppQDJShieldCursorProcInfo = kPascalStackBased
  373.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  374.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  375.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(short)))
  376.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short)))
  377. };
  378.  
  379. #if GENERATINGCFM
  380. #define NewQDTextProc(userRoutine)        \
  381.         (QDTextUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDTextProcInfo, GetCurrentArchitecture())
  382. #define NewQDLineProc(userRoutine)        \
  383.         (QDLineUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDLineProcInfo, GetCurrentArchitecture())
  384. #define NewQDRectProc(userRoutine)        \
  385.         (QDRectUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDRectProcInfo, GetCurrentArchitecture())
  386. #define NewQDRRectProc(userRoutine)        \
  387.         (QDRRectUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDRRectProcInfo, GetCurrentArchitecture())
  388. #define NewQDOvalProc(userRoutine)        \
  389.         (QDOvalUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDOvalProcInfo, GetCurrentArchitecture())
  390. #define NewQDArcProc(userRoutine)        \
  391.         (QDArcUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDArcProcInfo, GetCurrentArchitecture())
  392. #define NewQDPolyProc(userRoutine)        \
  393.         (QDPolyUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDPolyProcInfo, GetCurrentArchitecture())
  394. #define NewQDRgnProc(userRoutine)        \
  395.         (QDRgnUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDRgnProcInfo, GetCurrentArchitecture())
  396. #define NewQDBitsProc(userRoutine)        \
  397.         (QDBitsUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDBitsProcInfo, GetCurrentArchitecture())
  398. #define NewQDCommentProc(userRoutine)        \
  399.         (QDCommentUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDCommentProcInfo, GetCurrentArchitecture())
  400. #define NewQDTxMeasProc(userRoutine)        \
  401.         (QDTxMeasUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDTxMeasProcInfo, GetCurrentArchitecture())
  402. #define NewQDGetPicProc(userRoutine)        \
  403.         (QDGetPicUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDGetPicProcInfo, GetCurrentArchitecture())
  404. #define NewQDPutPicProc(userRoutine)        \
  405.         (QDPutPicUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDPutPicProcInfo, GetCurrentArchitecture())
  406. #define NewQDOpcodeProc(userRoutine)        \
  407.         (QDOpcodeUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDOpcodeProcInfo, GetCurrentArchitecture())
  408. #define NewQDJShieldCursorProc(userRoutine)        \
  409.         (QDJShieldCursorUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDJShieldCursorProcInfo, GetCurrentArchitecture())
  410. #else
  411. #define NewQDTextProc(userRoutine)        \
  412.         ((QDTextUPP) (userRoutine))
  413. #define NewQDLineProc(userRoutine)        \
  414.         ((QDLineUPP) (userRoutine))
  415. #define NewQDRectProc(userRoutine)        \
  416.         ((QDRectUPP) (userRoutine))
  417. #define NewQDRRectProc(userRoutine)        \
  418.         ((QDRRectUPP) (userRoutine))
  419. #define NewQDOvalProc(userRoutine)        \
  420.         ((QDOvalUPP) (userRoutine))
  421. #define NewQDArcProc(userRoutine)        \
  422.         ((QDArcUPP) (userRoutine))
  423. #define NewQDPolyProc(userRoutine)        \
  424.         ((QDPolyUPP) (userRoutine))
  425. #define NewQDRgnProc(userRoutine)        \
  426.         ((QDRgnUPP) (userRoutine))
  427. #define NewQDBitsProc(userRoutine)        \
  428.         ((QDBitsUPP) (userRoutine))
  429. #define NewQDCommentProc(userRoutine)        \
  430.         ((QDCommentUPP) (userRoutine))
  431. #define NewQDTxMeasProc(userRoutine)        \
  432.         ((QDTxMeasUPP) (userRoutine))
  433. #define NewQDGetPicProc(userRoutine)        \
  434.         ((QDGetPicUPP) (userRoutine))
  435. #define NewQDPutPicProc(userRoutine)        \
  436.         ((QDPutPicUPP) (userRoutine))
  437. #define NewQDOpcodeProc(userRoutine)        \
  438.         ((QDOpcodeUPP) (userRoutine))
  439. #define NewQDJShieldCursorProc(userRoutine)        \
  440.         ((QDJShieldCursorUPP) (userRoutine))
  441. #endif
  442.  
  443. #if GENERATINGCFM
  444. #define CallQDTextProc(userRoutine, byteCount, textBuf, numer, denom)        \
  445.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDTextProcInfo, (byteCount), (textBuf), (numer), (denom))
  446. #define CallQDLineProc(userRoutine, newPt)        \
  447.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDLineProcInfo, (newPt))
  448. #define CallQDRectProc(userRoutine, verb, r)        \
  449.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDRectProcInfo, (verb), (r))
  450. #define CallQDRRectProc(userRoutine, verb, r, ovalWidth, ovalHeight)        \
  451.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDRRectProcInfo, (verb), (r), (ovalWidth), (ovalHeight))
  452. #define CallQDOvalProc(userRoutine, verb, r)        \
  453.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDOvalProcInfo, (verb), (r))
  454. #define CallQDArcProc(userRoutine, verb, r, startAngle, arcAngle)        \
  455.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDArcProcInfo, (verb), (r), (startAngle), (arcAngle))
  456. #define CallQDPolyProc(userRoutine, verb, poly)        \
  457.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDPolyProcInfo, (verb), (poly))
  458. #define CallQDRgnProc(userRoutine, verb, rgn)        \
  459.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDRgnProcInfo, (verb), (rgn))
  460. #define CallQDBitsProc(userRoutine, srcBits, srcRect, dstRect, mode, maskRgn)        \
  461.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDBitsProcInfo, (srcBits), (srcRect), (dstRect), (mode), (maskRgn))
  462. #define CallQDCommentProc(userRoutine, kind, dataSize, dataHandle)        \
  463.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDCommentProcInfo, (kind), (dataSize), (dataHandle))
  464. #define CallQDTxMeasProc(userRoutine, byteCount, textAddr, numer, denom, info)        \
  465.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDTxMeasProcInfo, (byteCount), (textAddr), (numer), (denom), (info))
  466. #define CallQDGetPicProc(userRoutine, dataPtr, byteCount)        \
  467.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDGetPicProcInfo, (dataPtr), (byteCount))
  468. #define CallQDPutPicProc(userRoutine, dataPtr, byteCount)        \
  469.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDPutPicProcInfo, (dataPtr), (byteCount))
  470. #define CallQDOpcodeProc(userRoutine, fromRect, toRect, opcode, version)        \
  471.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDOpcodeProcInfo, (fromRect), (toRect), (opcode), (version))
  472. #define CallQDJShieldCursorProc(userRoutine, left, top, right, bottom)        \
  473.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppQDJShieldCursorProcInfo, (left), (top), (right), (bottom))
  474. #else
  475. #define CallQDTextProc(userRoutine, byteCount, textBuf, numer, denom)        \
  476.         (*(userRoutine))((byteCount), (textBuf), (numer), (denom))
  477. #define CallQDLineProc(userRoutine, newPt)        \
  478.         (*(userRoutine))((newPt))
  479. #define CallQDRectProc(userRoutine, verb, r)        \
  480.         (*(userRoutine))((verb), (r))
  481. #define CallQDRRectProc(userRoutine, verb, r, ovalWidth, ovalHeight)        \
  482.         (*(userRoutine))((verb), (r), (ovalWidth), (ovalHeight))
  483. #define CallQDOvalProc(userRoutine, verb, r)        \
  484.         (*(userRoutine))((verb), (r))
  485. #define CallQDArcProc(userRoutine, verb, r, startAngle, arcAngle)        \
  486.         (*(userRoutine))((verb), (r), (startAngle), (arcAngle))
  487. #define CallQDPolyProc(userRoutine, verb, poly)        \
  488.         (*(userRoutine))((verb), (poly))
  489. #define CallQDRgnProc(userRoutine, verb, rgn)        \
  490.         (*(userRoutine))((verb), (rgn))
  491. #define CallQDBitsProc(userRoutine, srcBits, srcRect, dstRect, mode, maskRgn)        \
  492.         (*(userRoutine))((srcBits), (srcRect), (dstRect), (mode), (maskRgn))
  493. #define CallQDCommentProc(userRoutine, kind, dataSize, dataHandle)        \
  494.         (*(userRoutine))((kind), (dataSize), (dataHandle))
  495. #define CallQDTxMeasProc(userRoutine, byteCount, textAddr, numer, denom, info)        \
  496.         (*(userRoutine))((byteCount), (textAddr), (numer), (denom), (info))
  497. #define CallQDGetPicProc(userRoutine, dataPtr, byteCount)        \
  498.         (*(userRoutine))((dataPtr), (byteCount))
  499. #define CallQDPutPicProc(userRoutine, dataPtr, byteCount)        \
  500.         (*(userRoutine))((dataPtr), (byteCount))
  501. #define CallQDOpcodeProc(userRoutine, fromRect, toRect, opcode, version)        \
  502.         (*(userRoutine))((fromRect), (toRect), (opcode), (version))
  503. #define CallQDJShieldCursorProc(userRoutine, left, top, right, bottom)        \
  504.         (*(userRoutine))((left), (top), (right), (bottom))
  505. #endif
  506.  
  507. struct GrafPort {
  508.     short                            device;
  509.     BitMap                            portBits;
  510.     Rect                            portRect;
  511.     RgnHandle                        visRgn;
  512.     RgnHandle                        clipRgn;
  513.     Pattern                            bkPat;
  514.     Pattern                            fillPat;
  515.     Point                            pnLoc;
  516.     Point                            pnSize;
  517.     short                            pnMode;
  518.     Pattern                            pnPat;
  519.     short                            pnVis;
  520.     short                            txFont;
  521.     Style                            txFace;                        /*txFace is unpacked byte but push as short*/
  522.     SInt8                            filler;
  523.     short                            txMode;
  524.     short                            txSize;
  525.     Fixed                            spExtra;
  526.     long                            fgColor;
  527.     long                            bkColor;
  528.     short                            colrBit;
  529.     short                            patStretch;
  530.     Handle                            picSave;
  531.     Handle                            rgnSave;
  532.     Handle                            polySave;
  533.     QDProcsPtr                        grafProcs;
  534. };
  535. typedef struct GrafPort GrafPort;
  536.  
  537. typedef GrafPort *GrafPtr;
  538.  
  539. /*
  540.  *    This set of definitions "belongs" in Windows.
  541.  *    But, there is a circularity in the headers where Windows includes Controls and
  542.  *    Controls includes Windows. To break the circle, the information
  543.  *    needed by Controls is moved from Windows to Quickdraw.
  544.  */
  545. typedef GrafPtr WindowPtr;
  546.  
  547. /*
  548.     Set STRICT_WINDOWS to 1 to make sure your code 
  549.     doesn't access the window record directly
  550. */
  551. #ifndef STRICT_WINDOWS
  552. #define STRICT_WINDOWS 0
  553. #endif
  554. #if STRICT_WINDOWS
  555. typedef struct OpaqueWindowRef *WindowRef;
  556.  
  557. #else
  558. typedef WindowPtr WindowRef;
  559.  
  560. #endif
  561. typedef UInt16 DragConstraint;
  562.  
  563.  
  564. enum {
  565.     kNoConstraint                = 0,
  566.     kVerticalConstraint            = 1,
  567.     kHorizontalConstraint        = 2
  568. };
  569.  
  570. /*
  571.  *    Here ends the list of things that "belong" in Windows.
  572.  */
  573. struct RGBColor {
  574.     unsigned short                    red;                        /*magnitude of red component*/
  575.     unsigned short                    green;                        /*magnitude of green component*/
  576.     unsigned short                    blue;                        /*magnitude of blue component*/
  577. };
  578. typedef struct RGBColor RGBColor, *RGBColorPtr, **RGBColorHdl;
  579.  
  580. typedef pascal void (*DragGrayRgnProcPtr)(void);
  581. typedef pascal Boolean (*ColorSearchProcPtr)(RGBColor *rgb, long *position);
  582. typedef pascal Boolean (*ColorComplementProcPtr)(RGBColor *rgb);
  583.  
  584. #if GENERATINGCFM
  585. typedef UniversalProcPtr DragGrayRgnUPP;
  586. typedef UniversalProcPtr ColorSearchUPP;
  587. typedef UniversalProcPtr ColorComplementUPP;
  588. #else
  589. typedef DragGrayRgnProcPtr DragGrayRgnUPP;
  590. typedef ColorSearchProcPtr ColorSearchUPP;
  591. typedef ColorComplementProcPtr ColorComplementUPP;
  592. #endif
  593.  
  594. enum {
  595.     uppDragGrayRgnProcInfo = kPascalStackBased,
  596.     uppColorSearchProcInfo = kPascalStackBased
  597.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  598.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(RGBColor*)))
  599.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long*))),
  600.     uppColorComplementProcInfo = kPascalStackBased
  601.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  602.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(RGBColor*)))
  603. };
  604.  
  605. #if GENERATINGCFM
  606. #define NewDragGrayRgnProc(userRoutine)        \
  607.         (DragGrayRgnUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppDragGrayRgnProcInfo, GetCurrentArchitecture())
  608. #define NewColorSearchProc(userRoutine)        \
  609.         (ColorSearchUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppColorSearchProcInfo, GetCurrentArchitecture())
  610. #define NewColorComplementProc(userRoutine)        \
  611.         (ColorComplementUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppColorComplementProcInfo, GetCurrentArchitecture())
  612. #else
  613. #define NewDragGrayRgnProc(userRoutine)        \
  614.         ((DragGrayRgnUPP) (userRoutine))
  615. #define NewColorSearchProc(userRoutine)        \
  616.         ((ColorSearchUPP) (userRoutine))
  617. #define NewColorComplementProc(userRoutine)        \
  618.         ((ColorComplementUPP) (userRoutine))
  619. #endif
  620.  
  621. #if GENERATINGCFM
  622. #define CallDragGrayRgnProc(userRoutine)        \
  623.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppDragGrayRgnProcInfo)
  624. #define CallColorSearchProc(userRoutine, rgb, position)        \
  625.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppColorSearchProcInfo, (rgb), (position))
  626. #define CallColorComplementProc(userRoutine, rgb)        \
  627.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppColorComplementProcInfo, (rgb))
  628. #else
  629. #define CallDragGrayRgnProc(userRoutine)        \
  630.         (*(userRoutine))()
  631. #define CallColorSearchProc(userRoutine, rgb, position)        \
  632.         (*(userRoutine))((rgb), (position))
  633. #define CallColorComplementProc(userRoutine, rgb)        \
  634.         (*(userRoutine))((rgb))
  635. #endif
  636.  
  637. struct ColorSpec {
  638.     short                            value;                        /*index or other value*/
  639.     RGBColor                        rgb;                        /*true color*/
  640. };
  641. typedef struct ColorSpec ColorSpec;
  642.  
  643. typedef ColorSpec *ColorSpecPtr;
  644.  
  645. typedef ColorSpec CSpecArray[1];
  646.  
  647. struct ColorTable {
  648.     long                            ctSeed;                        /*unique identifier for table*/
  649.     short                            ctFlags;                    /*high bit: 0 = PixMap; 1 = device*/
  650.     short                            ctSize;                        /*number of entries in CTTable*/
  651.     CSpecArray                        ctTable;                    /*array [0..0] of ColorSpec*/
  652. };
  653. typedef struct ColorTable ColorTable, *CTabPtr, **CTabHandle;
  654.  
  655. struct MatchRec {
  656.     unsigned short                    red;
  657.     unsigned short                    green;
  658.     unsigned short                    blue;
  659.     long                            matchData;
  660. };
  661. typedef struct MatchRec MatchRec;
  662.  
  663. struct PixMap {
  664.     Ptr                                baseAddr;                    /*pointer to pixels*/
  665.     short                            rowBytes;                    /*offset to next line*/
  666.     Rect                            bounds;                        /*encloses bitmap*/
  667.     short                            pmVersion;                    /*pixMap version number*/
  668.     short                            packType;                    /*defines packing format*/
  669.     long                            packSize;                    /*length of pixel data*/
  670.     Fixed                            hRes;                        /*horiz. resolution (ppi)*/
  671.     Fixed                            vRes;                        /*vert. resolution (ppi)*/
  672.     short                            pixelType;                    /*defines pixel type*/
  673.     short                            pixelSize;                    /*# bits in pixel*/
  674.     short                            cmpCount;                    /*# components in pixel*/
  675.     short                            cmpSize;                    /*# bits per component*/
  676.     long                            planeBytes;                    /*offset to next plane*/
  677.     CTabHandle                        pmTable;                    /*color map for this pixMap*/
  678.     long                            pmReserved;                    /*for future use. MUST BE 0*/
  679. };
  680. typedef struct PixMap PixMap, *PixMapPtr, **PixMapHandle;
  681.  
  682. struct PixPat {
  683.     short                            patType;                    /*type of pattern*/
  684.     PixMapHandle                    patMap;                        /*the pattern's pixMap*/
  685.     Handle                            patData;                    /*pixmap's data*/
  686.     Handle                            patXData;                    /*expanded Pattern data*/
  687.     short                            patXValid;                    /*flags whether expanded Pattern valid*/
  688.     Handle                            patXMap;                    /*Handle to expanded Pattern data*/
  689.     Pattern                            pat1Data;                    /*old-Style pattern/RGB color*/
  690. };
  691. typedef struct PixPat PixPat, *PixPatPtr, **PixPatHandle;
  692.  
  693. struct CCrsr {
  694.     short                            crsrType;                    /*type of cursor*/
  695.     PixMapHandle                    crsrMap;                    /*the cursor's pixmap*/
  696.     Handle                            crsrData;                    /*cursor's data*/
  697.     Handle                            crsrXData;                    /*expanded cursor data*/
  698.     short                            crsrXValid;                    /*depth of expanded data (0 if none)*/
  699.     Handle                            crsrXHandle;                /*future use*/
  700.     Bits16                            crsr1Data;                    /*one-bit cursor*/
  701.     Bits16                            crsrMask;                    /*cursor's mask*/
  702.     Point                            crsrHotSpot;                /*cursor's hotspot*/
  703.     long                            crsrXTable;                    /*private*/
  704.     long                            crsrID;                        /*private*/
  705. };
  706. typedef struct CCrsr CCrsr, *CCrsrPtr, **CCrsrHandle;
  707.  
  708. #if OLDROUTINELOCATIONS
  709. struct CIcon {
  710.     PixMap                            iconPMap;                    /*the icon's pixMap*/
  711.     BitMap                            iconMask;                    /*the icon's mask*/
  712.     BitMap                            iconBMap;                    /*the icon's bitMap*/
  713.     Handle                            iconData;                    /*the icon's data*/
  714.     short                            iconMaskData[1];            /*icon's mask and BitMap data*/
  715. };
  716. typedef struct CIcon CIcon, *CIconPtr, **CIconHandle;
  717.  
  718. #endif
  719. struct GammaTbl {
  720.     short                            gVersion;                    /*gamma version number*/
  721.     short                            gType;                        /*gamma data type*/
  722.     short                            gFormulaSize;                /*Formula data size*/
  723.     short                            gChanCnt;                    /*number of channels of data*/
  724.     short                            gDataCnt;                    /*number of values/channel*/
  725.     short                            gDataWidth;                    /*bits/corrected value (data packed to next larger byte size)*/
  726.     short                            gFormulaData[1];            /*data for formulas followed by gamma values*/
  727. };
  728. typedef struct GammaTbl GammaTbl, *GammaTblPtr, **GammaTblHandle;
  729.  
  730. struct ITab {
  731.     long                            iTabSeed;                    /*copy of CTSeed from source CTable*/
  732.     short                            iTabRes;                    /*bits/channel resolution of iTable*/
  733.     Byte                            iTTable[1];                    /*byte colortable index values*/
  734. };
  735. typedef struct ITab ITab, *ITabPtr, **ITabHandle;
  736.  
  737. struct SProcRec {
  738.     Handle                            nxtSrch;                    /*SProcHndl Handle to next SProcRec*/
  739.     ColorSearchUPP                    srchProc;                    /*search procedure proc ptr*/
  740. };
  741. typedef struct SProcRec SProcRec, *SProcPtr, **SProcHndl;
  742.  
  743. struct CProcRec {
  744.     Handle                            nxtComp;                    /*CProcHndl Handle to next CProcRec*/
  745.     ColorComplementUPP                compProc;                    /*complement procedure proc ptr*/
  746. };
  747. typedef struct CProcRec CProcRec, *CProcPtr, **CProcHndl;
  748.  
  749. struct GDevice {
  750.     short                            gdRefNum;                    /*driver's unit number*/
  751.     short                            gdID;                        /*client ID for search procs*/
  752.     short                            gdType;                        /*fixed/CLUT/direct*/
  753.     ITabHandle                        gdITable;                    /*Handle to inverse lookup table*/
  754.     short                            gdResPref;                    /*preferred resolution of GDITable*/
  755.     SProcHndl                        gdSearchProc;                /*search proc list head*/
  756.     CProcHndl                        gdCompProc;                    /*complement proc list*/
  757.     short                            gdFlags;                    /*grafDevice flags word*/
  758.     PixMapHandle                    gdPMap;                        /*describing pixMap*/
  759.     long                            gdRefCon;                    /*reference value*/
  760.     Handle                            gdNextGD;                    /*GDHandle Handle of next gDevice*/
  761.     Rect                            gdRect;                        /* device's bounds in global coordinates*/
  762.     long                            gdMode;                        /*device's current mode*/
  763.     short                            gdCCBytes;                    /*depth of expanded cursor data*/
  764.     short                            gdCCDepth;                    /*depth of expanded cursor data*/
  765.     Handle                            gdCCXData;                    /*Handle to cursor's expanded data*/
  766.     Handle                            gdCCXMask;                    /*Handle to cursor's expanded mask*/
  767.     long                            gdReserved;                    /*future use. MUST BE 0*/
  768. };
  769. typedef struct GDevice GDevice, *GDPtr, **GDHandle;
  770.  
  771. struct GrafVars {
  772.     RGBColor                        rgbOpColor;                    /*color for addPin  subPin and average*/
  773.     RGBColor                        rgbHiliteColor;                /*color for hiliting*/
  774.     Handle                            pmFgColor;                    /*palette Handle for foreground color*/
  775.     short                            pmFgIndex;                    /*index value for foreground*/
  776.     Handle                            pmBkColor;                    /*palette Handle for background color*/
  777.     short                            pmBkIndex;                    /*index value for background*/
  778.     short                            pmFlags;                    /*flags for Palette Manager*/
  779. };
  780. typedef struct GrafVars GrafVars, *GVarPtr, **GVarHandle;
  781.  
  782. struct CQDProcs {
  783.     QDTextUPP                        textProc;
  784.     QDLineUPP                        lineProc;
  785.     QDRectUPP                        rectProc;
  786.     QDRRectUPP                        rRectProc;
  787.     QDOvalUPP                        ovalProc;
  788.     QDArcUPP                        arcProc;
  789.     QDPolyUPP                        polyProc;
  790.     QDRgnUPP                        rgnProc;
  791.     QDBitsUPP                        bitsProc;
  792.     QDCommentUPP                    commentProc;
  793.     QDTxMeasUPP                        txMeasProc;
  794.     QDGetPicUPP                        getPicProc;
  795.     QDPutPicUPP                        putPicProc;
  796.     QDOpcodeUPP                        opcodeProc;                    /*fields added to QDProcs*/
  797.     UniversalProcPtr                newProc1;
  798.     UniversalProcPtr                newProc2;
  799.     UniversalProcPtr                newProc3;
  800.     UniversalProcPtr                newProc4;
  801.     UniversalProcPtr                newProc5;
  802.     UniversalProcPtr                newProc6;
  803. };
  804. typedef struct CQDProcs CQDProcs, *CQDProcsPtr;
  805.  
  806. struct CGrafPort {
  807.     short                            device;
  808.     PixMapHandle                    portPixMap;                    /*port's pixel map*/
  809.     short                            portVersion;                /*high 2 bits always set*/
  810.     Handle                            grafVars;                    /*Handle to more fields*/
  811.     short                            chExtra;                    /*character extra*/
  812.     short                            pnLocHFrac;                    /*pen fraction*/
  813.     Rect                            portRect;
  814.     RgnHandle                        visRgn;
  815.     RgnHandle                        clipRgn;
  816.     PixPatHandle                    bkPixPat;                    /*background pattern*/
  817.     RGBColor                        rgbFgColor;                    /*RGB components of fg*/
  818.     RGBColor                        rgbBkColor;                    /*RGB components of bk*/
  819.     Point                            pnLoc;
  820.     Point                            pnSize;
  821.     short                            pnMode;
  822.     PixPatHandle                    pnPixPat;                    /*pen's pattern*/
  823.     PixPatHandle                    fillPixPat;                    /*fill pattern*/
  824.     short                            pnVis;
  825.     short                            txFont;
  826.     Style                            txFace;                        /*txFace is unpacked byte  push as short*/
  827.     SInt8                            filler;
  828.     short                            txMode;
  829.     short                            txSize;
  830.     Fixed                            spExtra;
  831.     long                            fgColor;
  832.     long                            bkColor;
  833.     short                            colrBit;
  834.     short                            patStretch;
  835.     Handle                            picSave;
  836.     Handle                            rgnSave;
  837.     Handle                            polySave;
  838.     CQDProcsPtr                        grafProcs;
  839. };
  840. typedef struct CGrafPort CGrafPort, *CGrafPtr;
  841.  
  842. typedef CGrafPtr CWindowPtr;
  843.  
  844. struct ReqListRec {
  845.     short                            reqLSize;                    /*request list size*/
  846.     short                            reqLData[1];                /*request list data*/
  847. };
  848. typedef struct ReqListRec ReqListRec;
  849.  
  850. struct OpenCPicParams {
  851.     Rect                            srcRect;
  852.     Fixed                            hRes;
  853.     Fixed                            vRes;
  854.     short                            version;
  855.     short                            reserved1;
  856.     long                            reserved2;
  857. };
  858. typedef struct OpenCPicParams OpenCPicParams;
  859.  
  860. typedef pascal void (*DeviceLoopDrawingProcPtr)(short depth, short deviceFlags, GDHandle targetDevice, long userData);
  861.  
  862. #if GENERATINGCFM
  863. typedef UniversalProcPtr DeviceLoopDrawingUPP;
  864. #else
  865. typedef DeviceLoopDrawingProcPtr DeviceLoopDrawingUPP;
  866. #endif
  867.  
  868. enum {
  869.     uppDeviceLoopDrawingProcInfo = kPascalStackBased
  870.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  871.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  872.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(GDHandle)))
  873.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long)))
  874. };
  875.  
  876. #if GENERATINGCFM
  877. #define NewDeviceLoopDrawingProc(userRoutine)        \
  878.         (DeviceLoopDrawingUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppDeviceLoopDrawingProcInfo, GetCurrentArchitecture())
  879. #else
  880. #define NewDeviceLoopDrawingProc(userRoutine)        \
  881.         ((DeviceLoopDrawingUPP) (userRoutine))
  882. #endif
  883.  
  884. #if GENERATINGCFM
  885. #define CallDeviceLoopDrawingProc(userRoutine, depth, deviceFlags, targetDevice, userData)        \
  886.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppDeviceLoopDrawingProcInfo, (depth), (deviceFlags), (targetDevice), (userData))
  887. #else
  888. #define CallDeviceLoopDrawingProc(userRoutine, depth, deviceFlags, targetDevice, userData)        \
  889.         (*(userRoutine))((depth), (deviceFlags), (targetDevice), (userData))
  890. #endif
  891.  
  892. struct QDGlobals {
  893.     char                            privates[76];
  894.     long                            randSeed;
  895.     BitMap                            screenBits;
  896.     Cursor                            arrow;
  897.     Pattern                            dkGray;
  898.     Pattern                            ltGray;
  899.     Pattern                            gray;
  900.     Pattern                            black;
  901.     Pattern                            white;
  902.     GrafPtr                            thePort;
  903. };
  904. typedef struct QDGlobals QDGlobals;
  905.  
  906. extern QDGlobals qd;
  907.  
  908. extern pascal void InitGraf(void *globalPtr)
  909.  ONEWORDINLINE(0xA86E);
  910. extern pascal void OpenPort(GrafPtr port)
  911.  ONEWORDINLINE(0xA86F);
  912. extern pascal void InitPort(GrafPtr port)
  913.  ONEWORDINLINE(0xA86D);
  914. extern pascal void ClosePort(GrafPtr port)
  915.  ONEWORDINLINE(0xA87D);
  916. extern pascal void SetPort(GrafPtr port)
  917.  ONEWORDINLINE(0xA873);
  918. extern pascal void GetPort(GrafPtr *port)
  919.  ONEWORDINLINE(0xA874);
  920. extern pascal void GrafDevice(short device)
  921.  ONEWORDINLINE(0xA872);
  922. extern pascal void SetPortBits(const BitMap *bm)
  923.  ONEWORDINLINE(0xA875);
  924. extern pascal void PortSize(short width, short height)
  925.  ONEWORDINLINE(0xA876);
  926. extern pascal void MovePortTo(short leftGlobal, short topGlobal)
  927.  ONEWORDINLINE(0xA877);
  928. extern pascal void SetOrigin(short h, short v)
  929.  ONEWORDINLINE(0xA878);
  930. extern pascal void SetClip(RgnHandle rgn)
  931.  ONEWORDINLINE(0xA879);
  932. extern pascal void GetClip(RgnHandle rgn)
  933.  ONEWORDINLINE(0xA87A);
  934. extern pascal void ClipRect(const Rect *r)
  935.  ONEWORDINLINE(0xA87B);
  936. extern pascal void BackPat(ConstPatternParam pat)
  937.  ONEWORDINLINE(0xA87C);
  938. extern pascal void InitCursor(void)
  939.  ONEWORDINLINE(0xA850);
  940. extern pascal void SetCursor(const Cursor *crsr)
  941.  ONEWORDINLINE(0xA851);
  942. extern pascal void HideCursor(void)
  943.  ONEWORDINLINE(0xA852);
  944. extern pascal void ShowCursor(void)
  945.  ONEWORDINLINE(0xA853);
  946. extern pascal void ObscureCursor(void)
  947.  ONEWORDINLINE(0xA856);
  948. extern pascal void HidePen(void)
  949.  ONEWORDINLINE(0xA896);
  950. extern pascal void ShowPen(void)
  951.  ONEWORDINLINE(0xA897);
  952. extern pascal void GetPen(Point *pt)
  953.  ONEWORDINLINE(0xA89A);
  954. extern pascal void GetPenState(PenState *pnState)
  955.  ONEWORDINLINE(0xA898);
  956. extern pascal void SetPenState(const PenState *pnState)
  957.  ONEWORDINLINE(0xA899);
  958. extern pascal void PenSize(short width, short height)
  959.  ONEWORDINLINE(0xA89B);
  960. extern pascal void PenMode(short mode)
  961.  ONEWORDINLINE(0xA89C);
  962. extern pascal void PenPat(ConstPatternParam pat)
  963.  ONEWORDINLINE(0xA89D);
  964. extern pascal void PenNormal(void)
  965.  ONEWORDINLINE(0xA89E);
  966. extern pascal void MoveTo(short h, short v)
  967.  ONEWORDINLINE(0xA893);
  968. extern pascal void Move(short dh, short dv)
  969.  ONEWORDINLINE(0xA894);
  970. extern pascal void LineTo(short h, short v)
  971.  ONEWORDINLINE(0xA891);
  972. extern pascal void Line(short dh, short dv)
  973.  ONEWORDINLINE(0xA892);
  974. extern pascal void ForeColor(long color)
  975.  ONEWORDINLINE(0xA862);
  976. extern pascal void BackColor(long color)
  977.  ONEWORDINLINE(0xA863);
  978. extern pascal void ColorBit(short whichBit)
  979.  ONEWORDINLINE(0xA864);
  980. extern pascal void SetRect(Rect *r, short left, short top, short right, short bottom)
  981.  ONEWORDINLINE(0xA8A7);
  982. extern pascal void OffsetRect(Rect *r, short dh, short dv)
  983.  ONEWORDINLINE(0xA8A8);
  984. extern pascal void InsetRect(Rect *r, short dh, short dv)
  985.  ONEWORDINLINE(0xA8A9);
  986. extern pascal Boolean SectRect(const Rect *src1, const Rect *src2, Rect *dstRect)
  987.  ONEWORDINLINE(0xA8AA);
  988. extern pascal void UnionRect(const Rect *src1, const Rect *src2, Rect *dstRect)
  989.  ONEWORDINLINE(0xA8AB);
  990. extern pascal Boolean EqualRect(const Rect *rect1, const Rect *rect2)
  991.  ONEWORDINLINE(0xA8A6);
  992. extern pascal Boolean EmptyRect(const Rect *r)
  993.  ONEWORDINLINE(0xA8AE);
  994. extern pascal void FrameRect(const Rect *r)
  995.  ONEWORDINLINE(0xA8A1);
  996. extern pascal void PaintRect(const Rect *r)
  997.  ONEWORDINLINE(0xA8A2);
  998. extern pascal void EraseRect(const Rect *r)
  999.  ONEWORDINLINE(0xA8A3);
  1000. extern pascal void InvertRect(const Rect *r)
  1001.  ONEWORDINLINE(0xA8A4);
  1002. extern pascal void FillRect(const Rect *r, ConstPatternParam pat)
  1003.  ONEWORDINLINE(0xA8A5);
  1004. extern pascal void FrameOval(const Rect *r)
  1005.  ONEWORDINLINE(0xA8B7);
  1006. extern pascal void PaintOval(const Rect *r)
  1007.  ONEWORDINLINE(0xA8B8);
  1008. extern pascal void EraseOval(const Rect *r)
  1009.  ONEWORDINLINE(0xA8B9);
  1010. extern pascal void InvertOval(const Rect *r)
  1011.  ONEWORDINLINE(0xA8BA);
  1012. extern pascal void FillOval(const Rect *r, ConstPatternParam pat)
  1013.  ONEWORDINLINE(0xA8BB);
  1014. extern pascal void FrameRoundRect(const Rect *r, short ovalWidth, short ovalHeight)
  1015.  ONEWORDINLINE(0xA8B0);
  1016. extern pascal void PaintRoundRect(const Rect *r, short ovalWidth, short ovalHeight)
  1017.  ONEWORDINLINE(0xA8B1);
  1018. extern pascal void EraseRoundRect(const Rect *r, short ovalWidth, short ovalHeight)
  1019.  ONEWORDINLINE(0xA8B2);
  1020. extern pascal void InvertRoundRect(const Rect *r, short ovalWidth, short ovalHeight)
  1021.  ONEWORDINLINE(0xA8B3);
  1022. extern pascal void FillRoundRect(const Rect *r, short ovalWidth, short ovalHeight, ConstPatternParam pat)
  1023.  ONEWORDINLINE(0xA8B4);
  1024. extern pascal void FrameArc(const Rect *r, short startAngle, short arcAngle)
  1025.  ONEWORDINLINE(0xA8BE);
  1026. extern pascal void PaintArc(const Rect *r, short startAngle, short arcAngle)
  1027.  ONEWORDINLINE(0xA8BF);
  1028. extern pascal void EraseArc(const Rect *r, short startAngle, short arcAngle)
  1029.  ONEWORDINLINE(0xA8C0);
  1030. extern pascal void InvertArc(const Rect *r, short startAngle, short arcAngle)
  1031.  ONEWORDINLINE(0xA8C1);
  1032. extern pascal void FillArc(const Rect *r, short startAngle, short arcAngle, ConstPatternParam pat)
  1033.  ONEWORDINLINE(0xA8C2);
  1034. extern pascal RgnHandle NewRgn(void)
  1035.  ONEWORDINLINE(0xA8D8);
  1036. extern pascal void OpenRgn(void)
  1037.  ONEWORDINLINE(0xA8DA);
  1038. extern pascal void CloseRgn(RgnHandle dstRgn)
  1039.  ONEWORDINLINE(0xA8DB);
  1040. #if !SystemSevenOrLater
  1041. extern pascal OSErr BitMapToRegionGlue(RgnHandle region, const BitMap *bMap);
  1042. #endif
  1043. extern pascal OSErr BitMapToRegion(RgnHandle region, const BitMap *bMap)
  1044.  ONEWORDINLINE(0xA8D7);
  1045. extern pascal void DisposeRgn(RgnHandle rgn)
  1046.  ONEWORDINLINE(0xA8D9);
  1047. extern pascal void CopyRgn(RgnHandle srcRgn, RgnHandle dstRgn)
  1048.  ONEWORDINLINE(0xA8DC);
  1049. extern pascal void SetEmptyRgn(RgnHandle rgn)
  1050.  ONEWORDINLINE(0xA8DD);
  1051. extern pascal void SetRectRgn(RgnHandle rgn, short left, short top, short right, short bottom)
  1052.  ONEWORDINLINE(0xA8DE);
  1053. extern pascal void RectRgn(RgnHandle rgn, const Rect *r)
  1054.  ONEWORDINLINE(0xA8DF);
  1055. extern pascal void OffsetRgn(RgnHandle rgn, short dh, short dv)
  1056.  ONEWORDINLINE(0xA8E0);
  1057. extern pascal void InsetRgn(RgnHandle rgn, short dh, short dv)
  1058.  ONEWORDINLINE(0xA8E1);
  1059. extern pascal void SectRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn)
  1060.  ONEWORDINLINE(0xA8E4);
  1061. extern pascal void UnionRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn)
  1062.  ONEWORDINLINE(0xA8E5);
  1063. extern pascal void DiffRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn)
  1064.  ONEWORDINLINE(0xA8E6);
  1065. extern pascal void XorRgn(RgnHandle srcRgnA, RgnHandle srcRgnB, RgnHandle dstRgn)
  1066.  ONEWORDINLINE(0xA8E7);
  1067. extern pascal Boolean RectInRgn(const Rect *r, RgnHandle rgn)
  1068.  ONEWORDINLINE(0xA8E9);
  1069. extern pascal Boolean EqualRgn(RgnHandle rgnA, RgnHandle rgnB)
  1070.  ONEWORDINLINE(0xA8E3);
  1071. extern pascal Boolean EmptyRgn(RgnHandle rgn)
  1072.  ONEWORDINLINE(0xA8E2);
  1073. extern pascal void FrameRgn(RgnHandle rgn)
  1074.  ONEWORDINLINE(0xA8D2);
  1075. extern pascal void PaintRgn(RgnHandle rgn)
  1076.  ONEWORDINLINE(0xA8D3);
  1077. extern pascal void EraseRgn(RgnHandle rgn)
  1078.  ONEWORDINLINE(0xA8D4);
  1079. extern pascal void InvertRgn(RgnHandle rgn)
  1080.  ONEWORDINLINE(0xA8D5);
  1081. extern pascal void FillRgn(RgnHandle rgn, ConstPatternParam pat)
  1082.  ONEWORDINLINE(0xA8D6);
  1083. extern pascal void ScrollRect(const Rect *r, short dh, short dv, RgnHandle updateRgn)
  1084.  ONEWORDINLINE(0xA8EF);
  1085. extern pascal void CopyBits(const BitMap *srcBits, const BitMap *dstBits, const Rect *srcRect, const Rect *dstRect, short mode, RgnHandle maskRgn)
  1086.  ONEWORDINLINE(0xA8EC);
  1087. extern pascal void SeedFill(const void *srcPtr, void *dstPtr, short srcRow, short dstRow, short height, short words, short seedH, short seedV)
  1088.  ONEWORDINLINE(0xA839);
  1089. extern pascal void CalcMask(const void *srcPtr, void *dstPtr, short srcRow, short dstRow, short height, short words)
  1090.  ONEWORDINLINE(0xA838);
  1091. extern pascal void CopyMask(const BitMap *srcBits, const BitMap *maskBits, const BitMap *dstBits, const Rect *srcRect, const Rect *maskRect, const Rect *dstRect)
  1092.  ONEWORDINLINE(0xA817);
  1093. extern pascal PicHandle OpenPicture(const Rect *picFrame)
  1094.  ONEWORDINLINE(0xA8F3);
  1095. extern pascal void PicComment(short kind, short dataSize, Handle dataHandle)
  1096.  ONEWORDINLINE(0xA8F2);
  1097. extern pascal void ClosePicture(void)
  1098.  ONEWORDINLINE(0xA8F4);
  1099. extern pascal void DrawPicture(PicHandle myPicture, const Rect *dstRect)
  1100.  ONEWORDINLINE(0xA8F6);
  1101. extern pascal void KillPicture(PicHandle myPicture)
  1102.  ONEWORDINLINE(0xA8F5);
  1103. extern pascal PolyHandle OpenPoly(void)
  1104.  ONEWORDINLINE(0xA8CB);
  1105. extern pascal void ClosePoly(void)
  1106.  ONEWORDINLINE(0xA8CC);
  1107. extern pascal void KillPoly(PolyHandle poly)
  1108.  ONEWORDINLINE(0xA8CD);
  1109. extern pascal void OffsetPoly(PolyHandle poly, short dh, short dv)
  1110.  ONEWORDINLINE(0xA8CE);
  1111. extern pascal void FramePoly(PolyHandle poly)
  1112.  ONEWORDINLINE(0xA8C6);
  1113. extern pascal void PaintPoly(PolyHandle poly)
  1114.  ONEWORDINLINE(0xA8C7);
  1115. extern pascal void ErasePoly(PolyHandle poly)
  1116.  ONEWORDINLINE(0xA8C8);
  1117. extern pascal void InvertPoly(PolyHandle poly)
  1118.  ONEWORDINLINE(0xA8C9);
  1119. extern pascal void FillPoly(PolyHandle poly, ConstPatternParam pat)
  1120.  ONEWORDINLINE(0xA8CA);
  1121. extern pascal void SetPt(Point *pt, short h, short v)
  1122.  ONEWORDINLINE(0xA880);
  1123. extern pascal void LocalToGlobal(Point *pt)
  1124.  ONEWORDINLINE(0xA870);
  1125. extern pascal void GlobalToLocal(Point *pt)
  1126.  ONEWORDINLINE(0xA871);
  1127. extern pascal short Random(void)
  1128.  ONEWORDINLINE(0xA861);
  1129. extern pascal void StuffHex(void *thingPtr, ConstStr255Param s)
  1130.  ONEWORDINLINE(0xA866);
  1131. extern pascal Boolean GetPixel(short h, short v)
  1132.  ONEWORDINLINE(0xA865);
  1133. extern pascal void ScalePt(Point *pt, const Rect *srcRect, const Rect *dstRect)
  1134.  ONEWORDINLINE(0xA8F8);
  1135. extern pascal void MapPt(Point *pt, const Rect *srcRect, const Rect *dstRect)
  1136.  ONEWORDINLINE(0xA8F9);
  1137. extern pascal void MapRect(Rect *r, const Rect *srcRect, const Rect *dstRect)
  1138.  ONEWORDINLINE(0xA8FA);
  1139. extern pascal void MapRgn(RgnHandle rgn, const Rect *srcRect, const Rect *dstRect)
  1140.  ONEWORDINLINE(0xA8FB);
  1141. extern pascal void MapPoly(PolyHandle poly, const Rect *srcRect, const Rect *dstRect)
  1142.  ONEWORDINLINE(0xA8FC);
  1143. extern pascal void SetStdProcs(QDProcs *procs)
  1144.  ONEWORDINLINE(0xA8EA);
  1145. extern pascal void StdRect(GrafVerb verb, const Rect *r)
  1146.  ONEWORDINLINE(0xA8A0);
  1147. extern pascal void StdRRect(GrafVerb verb, const Rect *r, short ovalWidth, short ovalHeight)
  1148.  ONEWORDINLINE(0xA8AF);
  1149. extern pascal void StdOval(GrafVerb verb, const Rect *r)
  1150.  ONEWORDINLINE(0xA8B6);
  1151. extern pascal void StdArc(GrafVerb verb, const Rect *r, short startAngle, short arcAngle)
  1152.  ONEWORDINLINE(0xA8BD);
  1153. extern pascal void StdPoly(GrafVerb verb, PolyHandle poly)
  1154.  ONEWORDINLINE(0xA8C5);
  1155. extern pascal void StdRgn(GrafVerb verb, RgnHandle rgn)
  1156.  ONEWORDINLINE(0xA8D1);
  1157. extern pascal void StdBits(const BitMap *srcBits, const Rect *srcRect, const Rect *dstRect, short mode, RgnHandle maskRgn)
  1158.  ONEWORDINLINE(0xA8EB);
  1159. extern pascal void StdComment(short kind, short dataSize, Handle dataHandle)
  1160.  ONEWORDINLINE(0xA8F1);
  1161. extern pascal void StdGetPic(void *dataPtr, short byteCount)
  1162.  ONEWORDINLINE(0xA8EE);
  1163. extern pascal void StdPutPic(const void *dataPtr, short byteCount)
  1164.  ONEWORDINLINE(0xA8F0);
  1165. extern pascal void AddPt(Point src, Point *dst)
  1166.  ONEWORDINLINE(0xA87E);
  1167. extern pascal Boolean EqualPt(Point pt1, Point pt2)
  1168.  ONEWORDINLINE(0xA881);
  1169. extern pascal Boolean PtInRect(Point pt, const Rect *r)
  1170.  ONEWORDINLINE(0xA8AD);
  1171. extern pascal void Pt2Rect(Point pt1, Point pt2, Rect *dstRect)
  1172.  ONEWORDINLINE(0xA8AC);
  1173. extern pascal void PtToAngle(const Rect *r, Point pt, short *angle)
  1174.  ONEWORDINLINE(0xA8C3);
  1175. extern pascal void SubPt(Point src, Point *dst)
  1176.  ONEWORDINLINE(0xA87F);
  1177. extern pascal Boolean PtInRgn(Point pt, RgnHandle rgn)
  1178.  ONEWORDINLINE(0xA8E8);
  1179. extern pascal void StdLine(Point newPt)
  1180.  ONEWORDINLINE(0xA890);
  1181. extern pascal void OpenCPort(CGrafPtr port)
  1182.  ONEWORDINLINE(0xAA00);
  1183. extern pascal void InitCPort(CGrafPtr port)
  1184.  ONEWORDINLINE(0xAA01);
  1185. extern pascal void CloseCPort(CGrafPtr port)
  1186.  ONEWORDINLINE(0xA87D);
  1187. extern pascal PixMapHandle NewPixMap(void)
  1188.  ONEWORDINLINE(0xAA03);
  1189. extern pascal void DisposePixMap(PixMapHandle pm)
  1190.  ONEWORDINLINE(0xAA04);
  1191. extern pascal void CopyPixMap(PixMapHandle srcPM, PixMapHandle dstPM)
  1192.  ONEWORDINLINE(0xAA05);
  1193. extern pascal PixPatHandle NewPixPat(void)
  1194.  ONEWORDINLINE(0xAA07);
  1195. extern pascal void DisposePixPat(PixPatHandle pp)
  1196.  ONEWORDINLINE(0xAA08);
  1197. extern pascal void CopyPixPat(PixPatHandle srcPP, PixPatHandle dstPP)
  1198.  ONEWORDINLINE(0xAA09);
  1199. extern pascal void PenPixPat(PixPatHandle pp)
  1200.  ONEWORDINLINE(0xAA0A);
  1201. extern pascal void BackPixPat(PixPatHandle pp)
  1202.  ONEWORDINLINE(0xAA0B);
  1203. extern pascal PixPatHandle GetPixPat(short patID)
  1204.  ONEWORDINLINE(0xAA0C);
  1205. extern pascal void MakeRGBPat(PixPatHandle pp, const RGBColor *myColor)
  1206.  ONEWORDINLINE(0xAA0D);
  1207. extern pascal void FillCRect(const Rect *r, PixPatHandle pp)
  1208.  ONEWORDINLINE(0xAA0E);
  1209. extern pascal void FillCOval(const Rect *r, PixPatHandle pp)
  1210.  ONEWORDINLINE(0xAA0F);
  1211. extern pascal void FillCRoundRect(const Rect *r, short ovalWidth, short ovalHeight, PixPatHandle pp)
  1212.  ONEWORDINLINE(0xAA10);
  1213. extern pascal void FillCArc(const Rect *r, short startAngle, short arcAngle, PixPatHandle pp)
  1214.  ONEWORDINLINE(0xAA11);
  1215. extern pascal void FillCRgn(RgnHandle rgn, PixPatHandle pp)
  1216.  ONEWORDINLINE(0xAA12);
  1217. extern pascal void FillCPoly(PolyHandle poly, PixPatHandle pp)
  1218.  ONEWORDINLINE(0xAA13);
  1219. extern pascal void RGBForeColor(const RGBColor *color)
  1220.  ONEWORDINLINE(0xAA14);
  1221. extern pascal void RGBBackColor(const RGBColor *color)
  1222.  ONEWORDINLINE(0xAA15);
  1223. extern pascal void SetCPixel(short h, short v, const RGBColor *cPix)
  1224.  ONEWORDINLINE(0xAA16);
  1225. extern pascal void SetPortPix(PixMapHandle pm)
  1226.  ONEWORDINLINE(0xAA06);
  1227. extern pascal void GetCPixel(short h, short v, RGBColor *cPix)
  1228.  ONEWORDINLINE(0xAA17);
  1229. extern pascal void GetForeColor(RGBColor *color)
  1230.  ONEWORDINLINE(0xAA19);
  1231. extern pascal void GetBackColor(RGBColor *color)
  1232.  ONEWORDINLINE(0xAA1A);
  1233. extern pascal void SeedCFill(const BitMap *srcBits, const BitMap *dstBits, const Rect *srcRect, const Rect *dstRect, short seedH, short seedV, ColorSearchUPP matchProc, long matchData)
  1234.  ONEWORDINLINE(0xAA50);
  1235. extern pascal void CalcCMask(const BitMap *srcBits, const BitMap *dstBits, const Rect *srcRect, const Rect *dstRect, const RGBColor *seedRGB, ColorSearchUPP matchProc, long matchData)
  1236.  ONEWORDINLINE(0xAA4F);
  1237. extern pascal PicHandle OpenCPicture(const OpenCPicParams *newHeader)
  1238.  ONEWORDINLINE(0xAA20);
  1239. extern pascal void OpColor(const RGBColor *color)
  1240.  ONEWORDINLINE(0xAA21);
  1241. extern pascal void HiliteColor(const RGBColor *color)
  1242.  ONEWORDINLINE(0xAA22);
  1243. extern pascal void DisposeCTable(CTabHandle cTable)
  1244.  ONEWORDINLINE(0xAA24);
  1245. extern pascal CTabHandle GetCTable(short ctID)
  1246.  ONEWORDINLINE(0xAA18);
  1247. extern pascal CCrsrHandle GetCCursor(short crsrID)
  1248.  ONEWORDINLINE(0xAA1B);
  1249. extern pascal void SetCCursor(CCrsrHandle cCrsr)
  1250.  ONEWORDINLINE(0xAA1C);
  1251. extern pascal void AllocCursor(void)
  1252.  ONEWORDINLINE(0xAA1D);
  1253. extern pascal void DisposeCCursor(CCrsrHandle cCrsr)
  1254.  ONEWORDINLINE(0xAA26);
  1255. #if OLDROUTINELOCATIONS
  1256. extern pascal CIconHandle GetCIcon(short iconID)
  1257.  ONEWORDINLINE(0xAA1E);
  1258. extern pascal void PlotCIcon(const Rect *theRect, CIconHandle theIcon)
  1259.  ONEWORDINLINE(0xAA1F);
  1260. extern pascal void DisposeCIcon(CIconHandle theIcon)
  1261.  ONEWORDINLINE(0xAA25);
  1262. #endif
  1263. extern pascal void SetStdCProcs(CQDProcs *procs)
  1264.  ONEWORDINLINE(0xAA4E);
  1265. extern pascal GDHandle GetMaxDevice(const Rect *globalRect)
  1266.  ONEWORDINLINE(0xAA27);
  1267. extern pascal long GetCTSeed(void)
  1268.  ONEWORDINLINE(0xAA28);
  1269. extern pascal GDHandle GetDeviceList(void)
  1270.  ONEWORDINLINE(0xAA29);
  1271. extern pascal GDHandle GetMainDevice(void)
  1272.  ONEWORDINLINE(0xAA2A);
  1273. extern pascal GDHandle GetNextDevice(GDHandle curDevice)
  1274.  ONEWORDINLINE(0xAA2B);
  1275. extern pascal Boolean TestDeviceAttribute(GDHandle gdh, short attribute)
  1276.  ONEWORDINLINE(0xAA2C);
  1277. extern pascal void SetDeviceAttribute(GDHandle gdh, short attribute, Boolean value)
  1278.  ONEWORDINLINE(0xAA2D);
  1279. extern pascal void InitGDevice(short qdRefNum, long mode, GDHandle gdh)
  1280.  ONEWORDINLINE(0xAA2E);
  1281. extern pascal GDHandle NewGDevice(short refNum, long mode)
  1282.  ONEWORDINLINE(0xAA2F);
  1283. extern pascal void DisposeGDevice(GDHandle gdh)
  1284.  ONEWORDINLINE(0xAA30);
  1285. extern pascal void SetGDevice(GDHandle gd)
  1286.  ONEWORDINLINE(0xAA31);
  1287. extern pascal GDHandle GetGDevice(void)
  1288.  ONEWORDINLINE(0xAA32);
  1289. extern pascal long Color2Index(const RGBColor *myColor)
  1290.  ONEWORDINLINE(0xAA33);
  1291. extern pascal void Index2Color(long index, RGBColor *aColor)
  1292.  ONEWORDINLINE(0xAA34);
  1293. extern pascal void InvertColor(RGBColor *myColor)
  1294.  ONEWORDINLINE(0xAA35);
  1295. extern pascal Boolean RealColor(const RGBColor *color)
  1296.  ONEWORDINLINE(0xAA36);
  1297. extern pascal void GetSubTable(CTabHandle myColors, short iTabRes, CTabHandle targetTbl)
  1298.  ONEWORDINLINE(0xAA37);
  1299. extern pascal void MakeITable(CTabHandle cTabH, ITabHandle iTabH, short res)
  1300.  ONEWORDINLINE(0xAA39);
  1301. extern pascal void AddSearch(ColorSearchUPP searchProc)
  1302.  ONEWORDINLINE(0xAA3A);
  1303. extern pascal void AddComp(ColorComplementUPP compProc)
  1304.  ONEWORDINLINE(0xAA3B);
  1305. extern pascal void DelSearch(ColorSearchUPP searchProc)
  1306.  ONEWORDINLINE(0xAA4C);
  1307. extern pascal void DelComp(ColorComplementUPP compProc)
  1308.  ONEWORDINLINE(0xAA4D);
  1309. extern pascal void SetClientID(short id)
  1310.  ONEWORDINLINE(0xAA3C);
  1311. extern pascal void ProtectEntry(short index, Boolean protect)
  1312.  ONEWORDINLINE(0xAA3D);
  1313. extern pascal void ReserveEntry(short index, Boolean reserve)
  1314.  ONEWORDINLINE(0xAA3E);
  1315. extern pascal void SetEntries(short start, short count, CSpecArray aTable)
  1316.  ONEWORDINLINE(0xAA3F);
  1317. extern pascal void SaveEntries(CTabHandle srcTable, CTabHandle resultTable, ReqListRec *selection)
  1318.  ONEWORDINLINE(0xAA49);
  1319. extern pascal void RestoreEntries(CTabHandle srcTable, CTabHandle dstTable, ReqListRec *selection)
  1320.  ONEWORDINLINE(0xAA4A);
  1321. extern pascal short QDError(void)
  1322.  ONEWORDINLINE(0xAA40);
  1323. extern pascal void CopyDeepMask(const BitMap *srcBits, const BitMap *maskBits, const BitMap *dstBits, const Rect *srcRect, const Rect *maskRect, const Rect *dstRect, short mode, RgnHandle maskRgn)
  1324.  ONEWORDINLINE(0xAA51);
  1325. extern pascal void DeviceLoop(RgnHandle drawingRgn, DeviceLoopDrawingUPP drawingProc, long userData, DeviceLoopFlags flags)
  1326.  ONEWORDINLINE(0xABCA);
  1327.  
  1328. #if !GENERATINGCFM
  1329. #pragma parameter __A0 GetMaskTable
  1330. #endif
  1331. extern pascal Ptr GetMaskTable(void)
  1332.  ONEWORDINLINE(0xA836);
  1333. #if CGLUESUPPORTED
  1334. extern Boolean ptinrect(const Point *pt, const Rect *r);
  1335. extern void pt2rect(const Point *pt1, const Point *pt2, Rect *destRect);
  1336. extern void pttoangle(const Rect *r, const Point *pt, short *angle);
  1337. extern Boolean ptinrgn(const Point *pt, RgnHandle rgn);
  1338. extern void addpt(const Point *src, Point *dst);
  1339. extern void subpt(const Point *src, Point *dst);
  1340. extern Boolean equalpt(const Point *pt1, const Point *pt2);
  1341. extern void stuffhex(void *thingPtr, const char *s);
  1342. extern void stdline(const Point *newPt);
  1343. #endif
  1344. #if OLDROUTINENAMES
  1345. #define DisposPixMap(pm) DisposePixMap(pm)
  1346. #define DisposPixPat(pp) DisposePixPat(pp)
  1347. #define DisposCTable(cTable) DisposeCTable(cTable)
  1348. #define DisposCCursor(cCrsr) DisposeCCursor(cCrsr)
  1349. #if OLDROUTINELOCATIONS
  1350. #define DisposCIcon(theIcon) DisposeCIcon(theIcon)
  1351. #endif
  1352. #define DisposGDevice(gdh) DisposeGDevice(gdh)
  1353. #endif
  1354.  
  1355. #ifdef __CFM68K__
  1356. #pragma lib_export off
  1357. #endif
  1358.  
  1359. #if GENERATINGPOWERPC
  1360. #pragma options align=reset
  1361. #endif
  1362.  
  1363. #ifdef __cplusplus
  1364. }
  1365. #endif
  1366.  
  1367. #endif /* __QUICKDRAW__ */
  1368.